#include <iostream>
#include <iomanip>
#include <cstdlib>
#include "ListaCompras.hpp"


static int
menu()
{
	std::cout << "\n\n1 - Listar\n";
	std::cout << "2 - Inserir\n";
	std::cout << "3 - Alterar\n";
	std::cout << "4 - Excluir\n";
	std::cout << "5 - Finalizar\n\n";
	std::cout << "Opcao: ";
	std::string linha;
	std::getline(std::cin, linha);
	return atoi(linha.c_str());
}

static void
listar(ListaCompras &lista)
{
	std::cout
		<< std::setiosflags(std::ios_base::left)
		<< std::setw(12) << "Quantidade"
		<< std::setw(25) << "Descricao"
		<< std::setw(10) << "Preco"
		<< "\n\n";
	for (auto item : lista)
		std::cout
			<< std::setw(12) << item.quantidade
			<< std::setiosflags(std::ios_base::left)
			<< std::setw(25) << item.descricao
			<< std::resetiosflags(std::ios_base::left)
			<< std::setw(10) << item.precoUnitario
			<< "\n";
	std::string linha;
	std::getline(std::cin, linha);
}

static bool
le_item(ItemLista &item)
{
	std::string linha;

	std::cout << "Descricao.....: ";
	std::getline(std::cin, linha);
	if (linha.empty())
		return false;
	item.descricao = linha;

	std::cout << "Quantidade....: ";
	std::getline(std::cin, linha);
	if (linha.empty())
		return false;
	item.quantidade = atoi(linha.c_str());

	std::cout << "Preco unitario: ";
	std::getline(std::cin, linha);
	if (linha.empty())
		return false;
	item.precoUnitario = atof(linha.c_str());

	return true;
}

int
main(int argc, char *argv[])
{
	std::cout << "*** Lista de Compras v0.01 ***\n";
 
	ListaCompras listaCompras;

	listaCompras.carregaLista("ListaCompras.db");

	for (;;)
	{
		int opcao = menu();

		if (opcao == 5)
			break;

		if (1 == opcao)
			listar(listaCompras);
	}

	listaCompras.gravaLista("ListaCompras.db");

	return 0;
}

